import _MessageBox from './MessageBox';

export default {
  install(Vue) {
    let messageBox = null;

    //注册组件
    Vue.component(_MessageBox.name, _MessageBox);

    //新增公共方法
    Vue.prototype.$messageBox = {
      show,
      hide
    };

    function show(props) {
      //判断实例是否存在
      if (!messageBox) {
        //不存在时才实例化
        //extend()接收的参数为一个组件对象
        const MessageBox = Vue.extend({
          //需要render函数去给MessageBox来传入他的props
          render(h) {
            //参数1: 组件标签名称
            //参数2: props对象
            return h('message-box', { props });
          }
        });

        //实例化继承app实例的messageBox子类
        messageBox = new MessageBox();

        //显示messageBox
        //挂载
        this.vm = messageBox.$mount();
        document.body.appendChild(this.vm.$el);
      }
    }

    //隐藏messageBox
    function hide() {
      document.body.removeChild(this.vm.$el);
      messageBox.$destroy();
      messageBox = null;
      this.vm = null;
    }
  }
};
